home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / 35mm.it.ifs next >
Text File  |  2005-03-10  |  11KB  |  282 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Pivello (see comments for changes authors)
  8. Title=35mm.it
  9. Description=Get movie info from 35mm.it
  10. Site=http://www.35mm.it
  11. Language=IT
  12. Version=10.03.2005
  13. Requires=3.5.0
  14. Comments=**Changes**|12.04.2004 New script for XTML->JSP migration (Pivello)|14.04.2004 Added test for Apache Server down  (Pivello)|14.04.2004 Removed breaking code from comments field (Pivello)|15.04.2004 Code optimization Get film image if cover not found (Pivello)|adapted to v.3.5.0|08.03.2005 Now take all StoryBoard Information (TD77, NecroDeath)|10.03.2005 Revised for pivlib.pas Library use (Pivello)|
  15. License=*  The source code of the script can be used in   |*  another program only if full credits to              |*  script author and a link to Ant Movie Catalog  |*  website are given in the About box or in       |*  the documentation of the program               |
  16. GetInfo=1
  17.  
  18. [Options]
  19. Finale=1|1|0=Non prendere il finale|1=Prendi finale
  20.  
  21. ***************************************************)
  22.  
  23. program New35mm;
  24.  
  25. uses
  26.   PivLib; // Pivello's scripts common library
  27.   
  28. const
  29.   UrlBase = 'http://www.35mm.it';
  30.   QueryBase = UrlBase + '/film/ricerca/bottom/ricercaschedafilm.jsp?titolo=';
  31.   QueryFilm = UrlBase + '/film/scheda/top/scheda.jsp?idFilm=';
  32.   QueryCast = UrlBase + '/film/scheda/bottom/cast.jsp?idFilm=';
  33.   QueryCover = UrlBase + '/film/scheda/bottom/homevideo.jsp?idFilm=';
  34.   QueryMovie = UrlBase + '/film/scheda/frameset/scheda.jsp?idFilm=';
  35.   QueryCmnts = UrlBase + '/film/scheda/bottom/recensioni.jsp?idFilm=';
  36.   QueryTrama = UrlBase + '/film/scheda/popup/trama.jsp?idFilm=';
  37.   QueryFinale = UrlBase + '/film/scheda/popup/finale.jsp?idFilm=';
  38.  
  39. var
  40.   MovieUrl, CastUrl, FilmUrl, CoverUrl, CmntsUrl, TramaUrl, FinaleUrl: string;
  41.   MovieName, OriginalStr, TranslatedStr, PageStr:  string;
  42.  
  43.  
  44. // ---------------------------
  45. // DELETE DOTS AT END OF STRIG
  46. // IN:  Text      (string)
  47. // OUT: RemoveDot (string)
  48. // ---------------------------
  49. function RemoveDot (Text: string) : string;
  50. var
  51.   intLenght : integer;
  52. begin
  53.   repeat
  54.     intLenght := Length(Text);
  55.     if copy(Text,intLenght -1 ,1) = '.' then
  56.       begin
  57.         delete(Text, intLenght -1 ,1);
  58.       end;
  59.   until (copy(Text,intLenght -1,1) <> '.');
  60.   result := Text;
  61. End;
  62.  
  63.  
  64. // -----------------------
  65. // ANALYZE MOVIE DATA PAGE
  66. // IN:  none
  67. // OUT: set Ant fields
  68. // -----------------------
  69. procedure AnalyzeMoviePage;
  70. var
  71.   i, h, m: integer;
  72.   Duration, Description, Cast, TempStr, TempImg, hh, mm: string;
  73. begin
  74.   // Get packed title main page
  75.   PageStr := RemoveExtraChars(FilmUrl);
  76.   // Get film image (used if cover not found)
  77.   TempImg := getValue(PageStr, '/immagini/film/','" width="150" height="150"',false,true);
  78.   PageStr := GetPageStr;
  79.   // Translated Title field
  80.   SetField(fieldTranslatedTitle, getValue(PageStr, '<!-- titolo --> <b>','</b>',true,true));
  81.   PageStr := GetPageStr;
  82.   // Original Title field
  83.   SetField(fieldOriginalTitle, getValue(PageStr, '<!-- titolo originale --> <b>','</b>',true,true));
  84.   PageStr := GetPageStr;
  85.   if(GetField(fieldOriginalTitle)='')then
  86.     SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle));
  87.   // Country field
  88.   SetField(fieldCountry, getValue(PageStr, '<!-- nazionalitα --> ','<br>',true,true));
  89.   PageStr := GetPageStr;
  90.   // Duration field
  91.   TempStr := getValue(PageStr, '<!--durata del film --> ','<br>',true,true);
  92.   PageStr := GetPageStr;
  93.   Duration := '';
  94.   if (length(TempStr) > 0) then
  95.     begin
  96.       i := Pos('e', TempStr);
  97.       hh := copy(TempStr, 1, i - 3);
  98.       mm := copy(TempStr, i + 2, Length(TempStr) - i - 2);
  99.       h := StrToInt(hh, 2);
  100.       m := StrToInt(mm, 2);
  101.       Duration := IntToStr(h * 60 + m);
  102.     end;
  103.   SetField(fieldLength, Duration);
  104.   // Category Field
  105.   SetField(fieldCategory, getValue(PageStr, '<!-- genere --> <b>','</b>',true,true));
  106.   PageStr := GetPageStr;
  107.   // Director Field
  108.   SetField(fieldDirector, getValue(PageStr, 'target="_top">','</a>',true,true));
  109.   PageStr := GetPageStr;
  110.   // YearField
  111.   SetField(fieldYear, getValue(PageStr, '<!-- anno --> Anno: ','<br>',true,true));
  112.   PageStr := GetPageStr;
  113.   // Producer Field
  114.   SetField(fieldProducer, getValue(PageStr, 'target=''_TOP''>','</a>',true,true));
  115.   PageStr := GetPageStr;
  116.   // Description Field: Take information from Story Page
  117.   PageStr := RemoveExtraChars(TramaUrl);
  118.   Description := '';
  119.   repeat
  120.     TempStr := getValue(PageStr, '<td class="trecinque_dat" align="left" height="150" valign="top"><b>','</b>',true,true);
  121.     PageStr := GetPageStr;
  122.     Description := Description + TempStr +  ' ';
  123.   until(TempStr = '');
  124.   Description := RemoveDot(trim(Description)); // remove final dots
  125.   // Take information from Final Story Page if you want
  126.   case GetOption('Finale') of
  127.     1:
  128.       Begin
  129.         PageStr := RemoveExtraChars(FinaleUrl);
  130.         repeat
  131.           TempStr := getValue(PageStr, '<td class="trecinque_dat" align="left" height="150" valign="top">','</td>',true,true);
  132.           PageStr := GetPageStr;
  133.           Description := Description + TempStr + ' ';
  134.         until(TempStr = '');
  135.         Description := RemoveDot(trim(Description)); // remove final dots
  136.       end;
  137.   end;
  138.   SetField(fieldDescription, Description); // Save Story to Field Description
  139.   // Actors Field
  140.   PageStr := RemoveExtraChars(CastUrl); // Get packed Cast page
  141.   PageStr := Copy(PageStr,1,pos('<!-- end list cast -->',PageStr));
  142.   Cast := '';
  143.   repeat
  144.     TempStr := Trim(getValue(PageStr, 'target="_top">','</a>',true,true));
  145.     PageStr := GetPageStr;
  146.     if ((Cast<>'') and (TempStr<>'')) then
  147.       Cast := Cast + ', ';
  148.     Cast := Cast + TempStr;
  149.   until((TempStr='')or(Length(TempStr)>20));
  150.   if Cast = '' then
  151.     begin
  152.       PageStr := RemoveExtraChars(CastUrl);
  153.       Delete (PageStr,1,pos('<!-- produzione -->',PageStr));
  154.       Cast := Trim(getValue(PageStr, '</span><br>','<br> </td>',true,true));
  155.       PageStr := GetPageStr;
  156.     end;
  157.   SetField(fieldActors, Cast);
  158.   // image
  159.   PageStr := RemoveExtraChars(CoverUrl); // Get packed cover page
  160.   TempStr := getValue(PageStr, '/immagini/','" align="',false,true);
  161.   PageStr := GetPageStr;
  162.   if TempStr = '' then
  163.     TempStr := TempImg;
  164.   GetPicture(UrlBase + TempStr);
  165.   // Size Field
  166.   SetField(fieldSize, getValue(PageStr, 'Supporto: <span class="trecinque_dat_scuro_nobold">','</span>',true,true));
  167.   PageStr := GetPageStr;
  168.   // Comments Field
  169.   PageStr := RemoveExtraChars(CmntsUrl); // Get packed comments page
  170.   Delete (PageStr,1,pos('<!-- recensioni redazione esplose -->',PageStr));
  171.   TempStr := getValue(PageStr, '<td class="trecinque_dat_scuro_nobold">','<br> <br>',true,true);
  172.   PageStr := GetPageStr;
  173.   HTMLRemoveTags(TempStr);
  174.   SetField(fieldComments, TempStr);
  175.   // Movie URL field
  176.   SetField(fieldURL, MovieUrl);
  177. end;
  178.  
  179. // ------------------------------------------------------------------
  180. // FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
  181. // if OneFilm flag true return Film Id else populate PickTree
  182. // IN:  OneFilm flag (bool)
  183. // OUT: one page ID  (string)
  184. // ------------------------------------------------------------------
  185. function PopulatePickTree(OneFilm: boolean): string;
  186. var
  187.   TempIdFilm: string;
  188.   TempTitle: string;
  189.   StartPos: integer;
  190.   EndPos: integer;
  191. begin
  192.   if OneFilm then
  193.     begin
  194.       StartPos := pos('/film/scheda.jsp?idFilm=', PageStr);
  195.       EndPos := pos(''' target=''_top''', PageStr);
  196.       if StartPos > 0 then
  197.         begin
  198.           TempIdFilm := copy(PageStr, StartPos + 24, EndPos-Startpos - 24);
  199.           result := QueryMovie + TempIdFilm;
  200.         end
  201.     end
  202.   else
  203.     begin
  204.       PickTreeClear;
  205.       repeat
  206.         StartPos := pos('<a href="/film/scheda.jsp?idFilm=', PageStr);
  207.         EndPos := pos('" target="_top"', PageStr);
  208.         if StartPos > 0 then
  209.           begin
  210.             TempIdFilm := copy(PageStr, StartPos + 33, EndPos-Startpos - 33);
  211.             Delete(PageStr, 1, EndPos);
  212.             StartPos := pos('">', PageStr);
  213.             EndPos := pos('</a>', PageStr);
  214.             TempTitle := copy(PageStr, StartPos + 3, EndPos-Startpos - 4);
  215.             PickTreeAdd(TempTitle, QueryMovie + TempIdFilm);
  216.           end;
  217.       until(StartPos = 0);
  218.       result := '';
  219.     end
  220.  end;
  221.  
  222. // ---------------------------------
  223. // ANALYZE FIRST SEARCH RESULT PAGE:
  224. // IN:  page Url (string)
  225. // OUT: none
  226. // ---------------------------------
  227. procedure AnalyzeSearchPage(Url: string);
  228. var
  229.    FilmId: string;
  230. begin
  231.   PageStr := RemoveExtraChars(Url);
  232.   if pos('Nessun film trovato.', PageStr) > 0 then
  233.     ShowMessage('Title not found / Nessun film trovato.')
  234.   else if pos('Si Φ verificato un errore',PageStr) > 0 then
  235.     ShowMessage('Server not available, try later / Server non disponibile, prova pi∙ tardi')
  236.   else
  237.     begin
  238.       if pos('Risultato della ricerca:', PageStr) = 0 then
  239.         MovieUrl := PopulatePickTree(true)   // One title found
  240.       else
  241.         begin
  242.           PopulatePickTree(false);           // More titles found..
  243.           if not PickTreeExec(MovieUrl) then // ..select one
  244.             exit;
  245.         end
  246.       FilmId := Copy(MovieUrl,59,20);        // get film id from movie url
  247.       FilmUrl := QueryFilm + FilmId;
  248.       TramaUrl := QueryTrama + FilmId;
  249.       FinaleUrl := QueryFinale + FilmId;
  250.       CastUrl := QueryCast + FilmId;
  251.       CoverUrl := QueryCover + FilmId;
  252.       CmntsUrl := QueryCmnts + FilmId;
  253.       AnalyzeMoviePage;
  254.     end;
  255.  end;
  256.  
  257. // ----------
  258. // MAIN:
  259. // IN:  none
  260. // OUT: none
  261. // ----------
  262. begin
  263.   if CheckVersion(3,5,0) then
  264.     begin
  265.       TranslatedStr := GetField(fieldTranslatedTitle);
  266.       OriginalStr := GetField(fieldOriginalTitle);
  267.       if (TranslatedStr <> '') then
  268.         MovieName := TranslatedStr
  269.       else
  270.         MovieName := OriginalStr;
  271.       if (Input('35mm.it - By Pivello (and others)', 'Enter the title of the movie / Inserire titolo del film:', MovieName)) then
  272.         begin
  273.           InitializePivLib;
  274.           MovieUrl := QueryBase + UrlEncode(MovieName);
  275.           AnalyzeSearchPage(MovieUrl);
  276.           FinalizePivLib;
  277.         end;
  278.     end
  279.   else
  280.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  281. end.
  282.